/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package tp2ia_partie1;

import java.util.List;
import tp2ia_partie1.objects.Atome;
import tp2ia_partie1.objects.Fonction;
import tp2ia_partie1.objects.Substitution;
import tp2ia_partie1.objects.Variable;

/**
 *
 * @author hp
 */
public class RobinsonUnification {

    // fonction qui permet de verifier la validité d'une expression 
    public boolean verifierExpression(Atome E) {

        return true;
    }

    // fonction d'unification de deux expression 
    // recursive
    public List<Substitution> UNIFIER(Atome E1, Atome E2) {
        //TODO
    }

    // fonction d'unification de deux atomes
    public Substitution unifierAtomes(Atome E1, Atome E2) {

        // iterchanger E1 et E2 
        // TODO
               
        // E1 et E2 sont identiques
        if((E1.getC().equals(E2.getC()))){
            return null;
        }
        
        // E1 est une variale
        if(E1.getClass().equals(Variable.class)){
            if(((Fonction)E2).apparait(E1)){
                return null;
            }
            return new Substitution((Variable)E1, E2);
        }
         
        // E2 est une variable
           if(E2.getClass().equals(Variable.class)){
            return new Substitution((Variable)E2, E1);
        }
        
           return null;
    }

}
